#!/bin/bash

# PHP脚本路径
SCRIPT="bin/hyperf.php"

# 使用 Bash 字符串操作代替 basename 获取文件名并去掉扩展名
SCRIPT_NAME="${SCRIPT##*/}"  # 获取脚本文件的名称（不含路径）
SCRIPT_NAME="${SCRIPT_NAME%.php}"  # 去掉 .php 扩展名

# 生成唯一的 PID 文件路径
LOGFILE="./runtime/logs/script_run.log"

# 启动脚本的函数
start() {
    PID=$(pgrep -f php_hyperf | head -n 1)
    if [ -n "$PID" ]; then
        echo "脚本已经在运行 (PID: $PID)"
        exit 1
    fi

    # 清空日志文件
    : > $LOGFILE  # 这个命令会清空日志文件的内容

    # 写到文件并输出控制台
    echo "$(date "+%Y-%m-%d %H:%M:%S") 启动脚本..." | tee -a $LOGFILE

    #执行命令
    nohup bash -c "php $SCRIPT start | while IFS= read -r line; do echo \"$(date '+%Y-%m-%d %H:%M:%S') - \$line\"; done" >> $LOGFILE 2>&1 &

}

# 停止脚本的函数
stop() {
    PID=$(pgrep -f php_hyperf | head -n 1)

    # 判断 PID 是否为空
    if [ -z "$PID" ]; then
        echo "PID为空，无执行中的脚本"
        exit 1
    fi

    kill $PID
    echo "$(date "+%Y-%m-%d %H:%M:%S") 脚本已停止，PID: $PID"
}

# 重启脚本的函数
restart() {
    stop
    start
}

# 解析命令行参数
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo "用法: $0 {start|stop|restart}"
        exit 1
        ;;
esac
